package com.example.my_spring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 主程序启动类（ 注解为：@SpringBootApplication ）
 *
 * @author LJM
 * @date 2021-03-27
 */
@SpringBootApplication
public class MySpringApplication {

	public static void main(String[] args) {
		SpringApplication.run(MySpringApplication.class, args);
	}

	/**
	 * Configuration 可以理解为一个 Configuration 就是对应的一个Spring的xml版的容器；（ beans ）
	 *
	 */

	/**  @Component
	 *   @Bean
	 *    是两种使用注解来定义 bean 的方式。
	 *        @Component （和 @Service和@Repository ）用于自动检测和使用类路径扫描自动配置bean。
	 *          注释类和 bean 之间存在隐式的一对一映射（即每个类一个 bean ）。
	 *        @Bean 用于显式声明单个 bean，而不是让 Spring 像上面那样自动执行它。它将bean的声明与类定义分离，并允许您精确地创建和配置bean。
	 *        @Bean 则常和@Configuration 注解搭配使用：
	 *            @Configuration
	 *            public class WebSocketConfig {
	 *                @Bean
	 *                public Student student(){
	 * 			        return new Student();
	 *                }
	 *            }
	 * 		都可以使用 @Autowired 或者 @Resource 注解注入；
	 *
	 *    @Bean 注解告诉 Spring 这个方法将会返回一个对象，这个对象要注册为 Spring 应用上下文中的 bean。
	 *    	通常方法体中包含了最终产生 bean 实例的逻辑。
	 *    两者的区别：
	 * 		如果想将第三方的类变成组件，你又没有没有源代码，也就没办法使用 @Component 进行自动配置，这种时候使用 @Bean 就比较合适了。
	 * 		另外 @Bean 注解的方法返回值是对象，可以在方法中为对象设置属性。
	 *
	 */

}
